diub-Dokumentation

Inhalt

Titel


14 diub.SeOSQLite

Eine SeOS-Variante mit SQLite3 für die persistente Datenhaltung; siehe diub.SeOS. SeOS übernimmt die Verwaltungsaufgaben selber, daher legt es keine direkt lesbaren Daten in der SQLite-Datei ab.

Die Ableitung der Klasse SeOSQLite von der Klasse (diub.)SQLite wurde erst im Nachgang implementiert. Die Schnittstelle der Klasse SQLite für Tabellen-orientierte Zugriffe ist tatsächlich um ein vielfaches komplexer als SeOSQLite benötigt. Die Sammlungen dagegen bestehen grundsätzlich aus Tabellen mit nur zwei Spalten: Schlüssel ist Int64 oder String, der Wert immer ein BLOB. Die Notwendigkeit für die Klassenabhängigkeit entstand aus dem Wunsch, die Fähigkeiten von SeOSQLite und SQLite gleichzeitig in der selben Datenbank nutzen zu können.

Hinweis! Zur Vermeidung von Verwechslungen unterscheiden sich die Funktionsnamen deutlich von den bei SQL gebräuchlichen:
Insert → Store, Update → Refresh, Delete → Remove, Select → Get.

LUIDRecordBase

LUIDRecordBase ist eine Basis für Datenbank-Records mit einem UInt64 als UID. SeOSQLite stellt für diese Records zusätzlich eine vereinfachende Schnittstelle bereit. Die Nutzung ist rein optional.

Beispielklasse

public class TimedItem : LUIDRecordBase { public TimeStamp PersistenceTimeStamp; public string Value; }

14.1 Erzeugen, Öffnen & Schließen

internal SeOSQLite SEOS; SEOS = new SeOSQLite3 ("C:\\Example.sqlite"); bool b = SEOS.Connect (); // oder SEOS.Open (); ... bool b = SEOS.Disconnect (); // oder SEOS.Close ();

14.2 Collections

Collection anlegen

SEOS.AddCollection<Id> ("References"); SEOS.AddCollection<string> ("TimedItems");

Collection löschen

CommonStatus cs = DropCollection (collection_name);

Auflisten

List<CollectionInfo> infos = ListCollections ();

14.3 Speichern : Store

Store dient zum Speichern mit einer neuen UID.

Es gibt eine ganze Reihe von Varianten von Store welche die Kombinationsmöglichkeiten von TKey, LUIDRecordBase usw. widerspiegeln.

// TimedItem : LUIDRecordBase; TimedItem titem = new TimedItem(){..}; bool b0 = SeOS.StoreRecord (collection_name, titem); bool b1 = SeOS.Store (collection_name, titem.UID, titem);

14.4 Aktualisieren : Refresh

Zur Aktualisierung dient Refresh.

bool b0 = SeOS.RefreshRecord (collection_name, titem); bool b1 = SeOS.Refresh (collection_name, titem.UID, titem);

14.5 Einfaches Auslesen : GetOne / GetAll

Beim Auslesen muss der Typ des Objektes angegeben werden!

CommonStatus cs; TimedItem item; (cs, item) = GetOne<TimedItem> (collection_name, uid); List<TimedItem> list = GetAll<TimedItem> (collection_name);

14.6 QueryItem

Bei einer Abfrage mit Vergleichswerten muss als erstes der Typ des Schlüssels angegeben werden!

Hinweis! Felder lassen sich gemäß der C#-Namenskonvention angeben: "PersonInfo.Names.RearName".

QueryItem query = new QueryItem ( nameof(TimedItem.Value), // === "Value", Name des Feldes "Gesucht", // Vergleichswert QueryCompareType.Equal // Typ des Vergleichs ); // string ist der Typ des Schlüssels der Sammlung! (cs, item) = GetOne<string, TimedItem> (collection_name, query); (cs, list) = GetAll<string, TimedItem> (collection_name, query);

14.7 Löschen : Remove

Beim Löschen mit Schlüssel muss als erstes der Typ des Schlüssels angegeben werden!

// string ist der Typ des Schlüssels der Sammlung! bool b0 = Remove<string> (collection_name, titem.UID); bool b1 = RemoveRecord (collection_name, titem);

14.8 Index hinzufügen : AddIndex

Hinweis! Felder lassen sich gemäß der C#-Namenskonvention angeben: "PersonInfo.Names.RearName".

// string ist der Typ des angegebenen Feldes CommonStatus cs = AddIndex<string> (collection, nameof(TimedItem.Value));

14.9 Index löschen : DropIndex

Hinweis! Felder lassen sich gemäß der C#-Namenskonvention angeben: "PersonInfo.Names.RearName".

CommonStatus cs = DropIndex (collection_name, nameof(TimedItem.Value));